package com.partsoft.dits.dsm;

import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import com.partsoft.dits.TableDataEdgeDescriptor;
import com.partsoft.dits.message.DataAction;
import com.partsoft.dits.message.DataProperty;

/**
 *	数据源监听上下文 
 */
public interface DataSourceMonitorContext {

	/**
	 * 获得监听的数据源
	 */
	DataSource getDataSource();
	
	/**
	 * 获得系统名字空间
	 */
	String getMonitorLogNS();
	
	/**
	 * 获取监控日志表
	 * @return
	 */
	String getMonitorLogTable();
	
	/**
	 * 获取定义的表数据描述数组。
	 * @param schemaName 模式名称
	 * @param tableName 表名称
	 * @return
	 */
	TableDataEdgeDescriptor[] getEdgeDescriptor(String schemaName, String tableName);

	/**
	 * 处理监听数据
	 * @param descriptor
	 * @param dataAction 
	 * @param changedRows
	 */
	void processMonitorData(TableDataEdgeDescriptor descriptor, DataAction dataAction, List<Map<DataProperty, String>> changedRows);
	
}
